package zb.WX.service.userManage;

import com.google.gson.Gson;
import zb.WX.bean.userManage.TagBean;
import zb.WX.bean.userManage.TagFans;
import zb.WX.bean.userManage.TagProp;
import zb.WX.util.AccessTokenSaveUtil;
import zb.WX.util.GlobalVar;
import zb.WX.util.HttpsUtil;

/**
 * 用户标签的创建、查询、修改、删除
 *
 * @author Administrator
 */
public class TagService {
    /*
     *	创建标签：
     *  1.每次只能创建一个标签
     *  2.不能重复创建
     */
    public String createTag(String tagName) {
        String access_token = AccessTokenSaveUtil.getLocationAccesstonken();
        String urlStr = GlobalVar.CREATE_TAG.replace("ACCESS_TOKEN", access_token);

        //创建标签
        TagProp tagProp = new TagProp();
        tagProp.setName(tagName);

        TagBean tagBean = new TagBean();
        tagBean.setTagProp(tagProp);

        //转化为json
        Gson gson = new Gson();
        String jsonTag = gson.toJson(tagBean);
        System.out.println("创建标签：" + jsonTag);

        String result = HttpsUtil.getHttpsToJson(urlStr, jsonTag);
        System.out.println("创建标签返回结果：" + result);

        return result;
    }

    /*
     * 标签的查询:
     *
     */
    public String queryTag() {
        String access_token = AccessTokenSaveUtil.getLocationAccesstonken();
        String urlStr = GlobalVar.QUERY_TAG.replace("ACCESS_TOKEN", access_token);
        String result = HttpsUtil.getHttpsToJson(urlStr, null);
        System.out.println("查询标签结果：" + result);
        return result;
    }

    /*
     * 标签的修改：
     * 1.如果标签id和标签名是对应的，那么会更新失败；
     * 2.只有把标签名改为与之前不一样的才会成功。
     */
    public String updateTag(String tagId, String tagName) {
        String access_token = AccessTokenSaveUtil.getLocationAccesstonken();
        String urlStr = GlobalVar.UPDATE_TAG.replace("ACCESS_TOKEN", access_token);
        TagProp tagProp = new TagProp();
        tagProp.setName(tagName);//新的标签名
        tagProp.setId(tagId);//要被修改的标签id

        TagBean tagBean = new TagBean();
        tagBean.setTagProp(tagProp);

        Gson gson = new Gson();
        String jsonTag = gson.toJson(tagBean);
        System.out.println("修改标签：" + jsonTag);

        String result = HttpsUtil.getHttpsToJson(urlStr, jsonTag);
        System.out.println("修改标签返回结果：" + result);

        return result;
    }

    /*
     * 标签的删除：
     * 1.当某个标签下的粉丝超过10w时，后台不可直接删除标签。此时，开发者可以对该标签下的openid列表，
     *    先进行取消标签的操作，直到粉丝数不超过10w后，才可直接删除该标签；
     * 2.标签可以重复删除；
     * 3.默认的id=2的星标组不能删除
     */
    public String deleteTag(String tagId) {
        String access_token = AccessTokenSaveUtil.getLocationAccesstonken();
        String urlStr = GlobalVar.DELETE_TAG.replace("ACCESS_TOKEN", access_token);
        TagProp tagProp = new TagProp();
        tagProp.setId(tagId);

        TagBean tagBean = new TagBean();
        tagBean.setTagProp(tagProp);

        Gson gson = new Gson();
        String jsonTag = gson.toJson(tagBean);
        System.out.println("删除标签：" + jsonTag);

        String result = HttpsUtil.getHttpsToJson(urlStr, jsonTag);
        System.out.println("删除标签返回结果：" + result);
        return result;
    }

    /*
     * 获取标签下粉丝列表:
     * 1.tagid:要获取的标签id
     * 2.next_openid：第一个拉取的OPENID，不填默认从头开始拉取
     *
     */
    public String getFans(String tagId) {
        String access_token = AccessTokenSaveUtil.getLocationAccesstonken();
        String urlStr = GlobalVar.GET_TAG_FANS.replace("ACCESS_TOKEN", access_token);

        TagFans tagFans = new TagFans();
        tagFans.setTagid(tagId);
        tagFans.setNext_openid("");//默认从头拉取

        Gson gson = new Gson();
        String jsonTag = gson.toJson(tagFans);

        String result = HttpsUtil.getHttpsToJson(urlStr, jsonTag);
        System.out.println("删除标签返回结果：" + result);

        return result;
    }


    public static void main(String[] args) {
        //new TagService().createTag("管理員");//创建标签
        new TagService().queryTag();//查询所有标签
        //new TagService().updateTag("100","穷屌丝");//将id为104标签名为“屌丝”的标签修改了标签名为“穷屌丝”
        //new TagService().deleteTag("100");
        new TagService().getFans("101");
    }
}
